Tryhackme: Ice
Lo primero que haremos, será lanzar un NMAP para ver qué puertos tiene abiertos la máquina:
En la imagen anterior podemos ver varios puertos abiertos, los más interesantes a primera vista podrían ser:
- Puerto 445: Servicio SMB
- Puerto 3389: Servicio RDP
- Puerto 8000: Servidor Icecast streaming media server
A continuación, lanzaremos de nuevo NMAP pero cargando su módulo de detección de vulnerabilidades (vuln) para intentar encontrar alguna vulnerabilidad en los servicios anteriormente mencionados.
Como se observa en las imágenes anteriores, dos de los tres servicios mencionados son vulnerables. El CVE de la vulnerabilidad localizada en el protocolo SMB, es el CVE-2017-0143 y el de la vulnerabilidad localizada en el servidor HTTP donde se aloja la aplicación Icecast, es el CVE-2007-6750.
Ahora vamos a iniciar Metasploit para comenzar a explotar las distintas vulnerabilidades que hemos encontrado en el sistema objetivo.
Una vez iniciado, buscaremos la vulnerabilidad encontrada en el servicio SMB y configuraremos las distintas opciones para posteriormente lanzar el exploit:
En este caso, solo configuraremos el RHOSTS y el payload:
Una vez configurado el exploit, lo lanzaremos con "run".
Como observamos en la imagen anterior, hemos obtenido shell. Ahora haremos un "whoami" para ver qué tipo de usuario somos en el sistema.
Somos "nt authority\system", la mayor autoridad del sistema.
A continuación, vamos a mandar la sesión que hemos obtenido a segundo plano y vamos a ver si la aplicación que se encuentra dentro del servidor HTTP vulnerable, también es vulnerable o no.
Primeramente, vamos a buscar en la página "cvedetails" información sobre la aplicación Icecast. Como observamos en la siguiente imagen, existe una vulnerabilidad cuyo CVE es CVE-2004-1561, que te permite realizar un desbordamiento de búfer en la máquina vulnerable.
Ahora que sabemos esto, nos iremos a Metasploit, buscaremos el CVE que obtuvimos anteriormente y seleccionaremos el único exploit que nos aparece.
En este caso, solo configuraremos el RHOSTS:
Una vez configurado el exploit, lo lanzaremos con "run".
Como observamos en la imagen anterior, hemos obtenido shell y hemos conseguido acceso como usuario "Dark-PC\Dark".
Bien, ya tenemos acceso a la máquina mediante dos vías, pero ahora nos vamos a centrar en la segunda shell que hemos conseguido, ya que lo que queremos es llegar a ser "NT AUTHORITY SYSTEM" desde esta.
A continuación, utilizaremos el módulo de post explotación "suggester" para ver qué módulos podemos aplicar sobre la aplicación vulnerable.
El único parámetro que tenemos que modificar en este módulo, es el de la sesión.
Una vez lo hayamos modificado, iniciaremos el módulo con "run".
Como observamos en la siguiente imagen, hemos encontrado 14 exploits que nos servirían para explotar la vulnerabilidad encontrada en la aplicación, pero en este caso, vamos a quedarnos con el segundo que nos aparece en la lista: exploit/windows/local/bypassuac_eventvwr
Ahora lo que vamos a hacer, es buscar dicho exploit y vamos a lanzárselo a la aplicación para ver si conseguimos elevar nuestros privilegios en el sistema objetivo.
Los dos parámetros que modificaremos, serán: SESSION y payload.
Una vez los hayamos modificado, iniciaremos el exploit con "run".
Nota: Explicar una vez haya resuelto la duda que tengo.
Ahora que tenemos otra shell abierta en el sistema objetivo, vamos a upgradearla a una "Meterpreter" para poder ejecutar el comando "getprivs" y ver si el proceso en el que se ha creado la shell tenemos permisos suficientes para seguir escalando privilegios.
Para ello, usaremos el siguiente módulo de Metasploit:
Modificamos las opciones pertinentes y lo lanzamos. Una vez lanzado, se nos abrirá una segunda sesión con una "Meterpreter" creada.
Ahora tendremos 3 sesiones abiertas (4 si tuviésemos abierta la del Eternal Blue, pero como hemos reiniciado la máquina, la hemos perdido):
Ahora abriremos la nueva shell y ejecutaremos el comando "getprivs" para ver qué permisos tenemos en dicha shell:
Como observamos en la imagen anterior, tenemos muchos permisos en la shell, pero el que más nos interesa, es el que se encuentra resaltado que se llama "SeTakeOwnershipPrivilege", ya que este nos permite tomar posesión de archivos u otros objetos del sistema (Por ejemplo, un proceso del sistema).
Entonces, lo que vamos a hacer ahora, es pasar nuestra Meterpreter a un proceso que realmente tenga los permisos que necesitamos para interactuar con el servicio lsass, el servicio responsable de la autenticación dentro de Windows. Primero, enumeraremos los procesos usando el comando "ps".
Ahora vamos a buscar un proceso que tenga la misma arquitectura y los mismos permisos que el servicio lsass. Por ejemplo, el servicio de impresión nos serviría en este caso a la perfección.
Una vez localizado, vamos a migrar nuestra Meterpreter a dicho proceso utilizando el siguiente comando:
Ahora, usaremos "getuid" para ver si hemos conseguido escalar privilegios de manera exitosa:
Ya somos NT AUTHORITY\SYSTEM, la mayor autoridad del sistema.
Ahora que hemos conseguidos permisos de administración, vamos a intentar conseguir las credenciales del sistema con Kiwi. Para ello, lo cargaremos en Meterpreter introduciendo el siguiente comando:
Una vez hayamos cargado el plugin, usaremos la ayuda para ver qué comando de Kiwi podríamos usar para poder obtener todas las credenciales del sistema.
Como observamos en la imagen anterior, el comando "creds_all" nos devolverá todas las credenciales de los distintos usuarios del sistema.
Por último, vamos a ver algunos comandos que nos serán útiles tras haber explotado y escalado privilegios en el sistema:
Con este comando obtenemos los hashes de las contraseñas de los distintos usuarios y podríamos romperlos con Hydra o Hashcat.
Con este comando podríamos ver en tiempo real todo lo que está sucediendo en la máquina objetivo.
Nota: Es muy inestable.
































